package com.link.base.base.wechat.service;

import com.link.base.base.wechat.model.WxCardSign;

import java.util.List;
import java.util.Map;

/**
 * 微信卡券签名
 *
 * @author KuangRuifeng
 * @date 2018年12月15日
 */
public interface WxCardSignService {

    /**
     * 获取领取微信卡券需要的扩展字段
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @param wxCardSign 查询参数
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    List<WxCardSign> getCardExt(WxCardSign wxCardSign) throws Exception;

    /**
     * 对添加微信卡券后返回的加密code进行解密
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @param wxCardSign 查询参数
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    List<WxCardSign> decryptCardCode(WxCardSign wxCardSign) throws Exception;

    /**
     * 获取微信服务号appid
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @param wxPlatformId 微信服务号id
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    String getAppId(Long wxPlatformId) throws Exception;

    /**
     * 重载getAppid方法，没有查询参数时默认查询主要的服务号
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    String getAppId() throws Exception;

    /**
     * 获取开卡组件参数
     *
     * @author KuangRuifeng
     * @date 2019年4月30日11:47
     * @param wxCardSign 查询参数
     * @return map
     * @throws Exception 异常
     */
    Map<String, String> getExtraData(WxCardSign wxCardSign) throws Exception;

    /**
     * 获取微信服务号appid
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @param wxPlatformId 微信服务号id
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    String getAppid(Long wxPlatformId) throws Exception;

    /**
     * 重载getAppid方法，没有查询参数时默认查询主要的服务号
     *
     * @author KuangRuifeng
     * @date 2018年12月15日
     * @return appid 主要的服务号appid
     * @throws Exception 异常
     */
    String getAppid() throws Exception;

}
